package com.roc.service.operator;

import java.util.List;
import java.util.Map;

import com.roc.dao.DaoException;
import com.roc.pojo.AuditingItem;
import com.roc.pojo.MerchantModuleRight;
import com.roc.pojo.ModuleCategory;
import com.roc.pojo.OperRole;
import com.roc.pojo.Operators;
import com.roc.pojo.TblArea;
import com.roc.pojo.TblOrgMain;
import com.roc.service.ServiceException;


/**
 * 
 * @author 陈锴
 * 
 * 操作员权限管理
 *
 */
public interface IPowerInfoService {
	
	/**
	 * 查询各角色所对应的权限
	 * @param logingOperators 操作员 
	 *  @param type  查询类别  null为收单管理平台  "0"为数据分析平台
	 * */
	List<ModuleCategory> queryModuleCategoryList(Operators logingOperators,String type) throws ServiceException;
	
 
	/**
	 * 查询操作员所有权限
	 * @param accountNo 操作员账号
	 *  @param type  查询类别  null为收单管理平台  "0"为数据分析平台
	 * */
	List<MerchantModuleRight> queryOpertorPowerList(String accountNo,String type) throws ServiceException ;

	/**
	 * 添加or修改操作员权限
	 * @param accountNo 要设置的操作员账号
	 * @param operators 处理权限的操作员账号
	 * @param list 要设置新的权限数组
	 * @param  type  类别    null为收单管理平台  "0"为数据分析平台
	 * @return  boolean 布尔值
	 * */
	boolean editUpdateOperatorPowerService(String accountNo,String operators,String list[],String type) throws ServiceException;
	
	Operators queryByAccountNo(String AccountNo) throws ServiceException;
	Operators loadOperatorsById(long id) throws ServiceException;
	void auditingOperator(Operators auditedOper,String operators,AuditingItem auditingItem)throws ServiceException;
	boolean updateStatus(Long id,String status,String loginOper)throws ServiceException;
	int updateValitTime(List<Long> idList,String loginOper)throws ServiceException;
	boolean editUpdateOperator(Operators oper,String loginOper)throws ServiceException;
	boolean resetPwd(Operators oper,Long id)throws ServiceException;
	Operators validateAccount(String AccountNo) throws ServiceException;
	/**
	 * 通过 名称 查询 代理商信息
	 * @param realName 查询信息
	 * @param orgCode 机构号
	 * @param flag 标志，0，查询操作表内所有的信息，1，查询 收单事业部下的信息
	 * @return 代理商信息
	 * @throws ServiceException
	 */
	public List<Operators> queryRealNameInfoByName(String realName , String orgCode, String roleType, int flag) throws ServiceException;
	
	/**
	 * 通过　当前登陆账号id　查询　仓库导入的SN个数
	 * @param opId　当前登陆账号id
	 * @return　仓库导入的SN个数
	 * @throws ServiceException
	 */
	Map<String, Map<String, String>> querySnCount( Long opId ) throws ServiceException;
	
	/**
	 * 通过　当前登陆账号id　查询　自营导入的SN个数
	 * @param opId　当前登陆账号id
	 * @param orgCode 当前登陆账号机构号
	 * @return　自营导入的SN个数
	 * @throws ServiceException
	 */
	Map<String, Map<String, String>> querySelfSupportSnCount( Long opId , String orgCode) throws ServiceException;
	
	/**
	 * 通过代理商序号编码查询此代理商
	 * @param agentNumber 代理商序号编码
	 * @return 代理商
	 * @throws ServiceException
	 */
	boolean queryOperatorInfoByNumberCode ( String agentType , String agentNumber ) throws ServiceException ;
	
	/**
	 *  通过分公司id查询此分公司的序号 
	 * @param areaId 分公司id
	 * @return 此分公司的序号 
	 * @throws ServiceException
	 */
	String queryAgentNumberByAreaId ( String areaId ) throws ServiceException ;
	 
	/**
	 * 查询某机构下分公司属性信息，注：所属机构为空，查询所有分公司信息
	 * @param orgCode 所属机构
	 * @return 某机构下分公司属性信息
	 * @throws ServiceException
	 */
	List<TblArea> queryAreaInfoByOrgCode( String orgCode ) throws ServiceException ;
	
	/**
	 * 查询操作员上级角色
	 * @param opId
	 * @return
	 * @throws DaoException
	 */
	String  querySuperRoleByOpId(Long opId) throws DaoException;
	
	/**
	 * 通过 一级机构编号 查询 机构管理员 信息
	 * @param orgCode 一级机构编号
	 * @return 机构管理员
	 * @throws ServiceException
	 */
	Operators queryOperByOneOrgCode(String orgCode) throws ServiceException ;
	
	/**
	 * 查询机构管理员信息
	 * @param supId 上级id
	 * @return 机构管理员信息
	 * @throws ServiceException
	 */
	List<Operators> queryManagerInfoBySupId(String supId) throws ServiceException ;
	
	/**
	 * 登录人员角色判定
	 * @param supId,roleType,opId
	 * @return
	 * @throws ServiceException
	 */
	Map<String, String>  queryRealIdByOpId(Long supId,String roleType,Long opId,String orgCode) throws DaoException;
	
	/**
	 * 查询市场人员管理小机构
	 * @param id
	 * @return
	 * @throws ServiceException
	 */
	List<TblOrgMain> queryOrgMinByAgentId(Long id) throws ServiceException ;
	
	/**
	 * 查询市场人员未管理小机构
	 * @param id
	 * @return
	 * @throws ServiceException
	 */
	List<TblOrgMain> queryNoOrgMinByAgentId(Long id,String aredId) throws ServiceException ;
	
	/**
	 * 查询市场人员未管理小机构
	 * @param id
	 * @return
	 * @throws ServiceException
	 */
	Operators queryYyAgentId(Long id) throws ServiceException ;
	
	/**
	 * 查询代理商列表信息
	 * @param roleType
	 * @param oneagentId
	 * @return
	 * @throws ServiceException
	 */
	List<Operators> queryOperatorsByParams(String roleType, String oneagentId) throws ServiceException;
	
	/**
	 * 查询是否是直营机构
	 * @param id
	 * @return
	 * @throws ServiceException
	 */
	Operators findDirectlyUnder(Long id) throws ServiceException ;
}
